<?php 
namespace Lib\Model;
use Lib\ResLoader;
/**
 * Base class for models
 *
 * @since 23 июня 2010
 * @author diotheos
 */
class DoctrineManager{
	/**
	 * Enter description here ...
	 * @var Doctrine\ORM\EntityManager
	 */
	protected $_em;
	
	protected $_defaultEntityName;
	
	/**
	 * Function description
	 * 
	 * @since 23 июня 2010
	 * @author diotheos
	 * @return void
	 */
	public function __construct(){
		$this->_em = $this->getEntityManager();
	}

	/**  
	 * Gets Entity manager
	 * 
	 * @since 23 июня 2010
	 * @author diotheos
	 * @return Doctrine\ORM\EntityManager
	 */
	public function getEntityManager(){
		$entityManager = ($this->_em instanceof Doctrine\ORM\EntityManager)? $this->_em: ResLoader::getResource('Doctrine2');
		$this->_em = $entityManager;
		return $this->_em;
	}
    /**
     * Sets Entity manager
     * 
     * @since 23 июня 2010
     * @author diotheos
     * @return Lib_Model_Doctrine
     */
    public function setEntityManager(Doctrine\ORM\EntityManager $em){
    	$this->_em = $em;
        return $this;
    }
    /**
     * Function description
     * 
     * @since 23 июня 2010
     * @author diotheos
     * @return Doctrine\ORM\EntityRepository
     */
    public function getEntity($entityName){
    	return $this->_em->getRepository($entityName);
    }
    
    /**
     * Function description
     * 
     * @since 23 июня 2010
     * @author diotheos
     * @param String $entityName
     * @return Lib_Model_Doctrine
     */
    public function setDefaultEntity($entityName){
    	$this->_defaultEntityName = $entityName;
    	return $this;
    }
    
    /**
     * Function description
     * 
     * @since 23 июня 2010
     * @author diotheos
     * @return Doctrine\ORM\EntityRepository
     */
    public function getDefaultEntity(){
    	return $this->getEntity($this->getDefaultEntityName());
    }
    /**
     * Function description
     * 
     * @since 23 июня 2010
     * @author diotheos
     * @return string
     */
    public function getDefaultEntityName(){
    	return $this->_defaultEntityName;
    }
}